1. Field of the Invention
The present invention relates to a system of computing devices for the collection and management of information. More particularly, but not by way of limitation, the present invention relates to a system for collecting and managing information including a plurality of computer devices loosely networked to a server and an operating system for a computer which provides a number of features favorable for use in the inventive system.
2. Background of the Invention
Virtually all business software applications involve the collection of information in some form or another. Where information is gathered away from the convenience of a desktop, workers have traditionally entered the information on paper forms. This data is then entered into a computer in a second step. This extra step leads to delays and inaccuracies which are costly and, more importantly, unnecessary.
Handheld computers are well known in the art. In fact such computers are presently available from numerous manufacturers offering a vast assortment of operating systems and hardware configurations. While such devices come in a host of variations, generally handheld computers include an LCD display, a method for gathering manual input, storage, and a variety of machine interfaces, i.e., an IR link, a USB port, a serial port, etc.
As with their desktop, and laptop counterparts, a handheld computer will also include an operating system which provides an operator interface, file management, and standardized I/O, as well as facilitating the running of application programs. Thus far, handheld operating systems mimic those of desktop and laptop systems, despite the fact that handheld devices are typically used in a different manner and have radically different resources.
As with other types of computers, handheld computers suffer from compatibility issues, especially in the operation of application programs. Generally speaking, software programs must typically be tailored to a specific family of processors and to a specific operating system. Most applications are developed in a high level language and then compiled for a specific target processor. As different manufacturers select different processors, an application written for one family of processors must be recompiled to execute in a processor of a different family. Even when two manufacturers select compatible processors, if they chose different operating systems, applications written for one device will probably not run correctly on the other device. Since the operating system provides access to the various hardware resources and manages the file system, it is almost unfathomable that the operating systems of independent authors would be compatible, unless one specifically set out to copy the other. Thus, particular applications tend to grow up around a particular family of devices which share an operating system and, unfortunately, the application may not be available for non-compatible devices.
Another issue which is common to all computers is the transferability of stored information, specifically, the ability to move files from machine-to-machine. While most handheld computers include an infrared port for communicating with other infrared devices, including other handhelds, files transferred in such a manner may not be usable by software on the receiving device. This is especially true of information formatted for a particular application such as a word processor, spread sheet program, data base manager, or the like.
To overcome the necessity of compiling a program for a particular machine, an application may be written in an interpreted language, or a language which can be compiled to produce an intermediate language (i.e., a language that falls somewhere between source code and object code) such as i-code or tokens. In such a scheme, each device is provided with a run-time package which can execute the compiled i-code or tokens, the run-time package having been written for that particular device, thus, only the run-time package needs to be modified in order to port a program to a new computing environment. Once the run-time package is installed, any application authored in the language and which has been compiled to i-code will run on the target device. Unfortunately, such languages typically lack effective optimization and generally do not provide a broad range of support for hardware resources. Regardless of the language selected, whether compiled, interpreted, or whatever, software coding requires at least a nominal degree of programming skill to create the application program.
Perhaps because handheld computers are not as evolved as their desktop counterparts, or because it is typically cumbersome to enter information, or maybe due to the lack of a true front-runner in operating systems, handheld computers have not inspired the full range of software products available for larger computers. The result has been a rather limited selection of retail software applications for handheld devices as compared with their desktop counterparts, such software is aimed primarily at organizational tools, e-mail, and games. However, at the other end of the spectrum, custom programs tailored for a specific customer, handheld computers are gaining momentum in replacing manual forms which are often filled-out in remote areas, away from a desktop, i.e. manufacturing inventory, quality inspections, delivery systems, and the like. One reason for the increasing movement toward the use of handheld computers for data gathering tasks is that they can be easily transported to the source of the data and have the information directly entered into them, thereby eliminating the potentially error-prone step of manual data entry of information on previously completed paper forms. Eliminating the extra step additionally saves unnecessary labor, and allows the data to be entered in a more timely fashion.
Due to their incredible portability, handhelds are particularly well suited to this type of data gathering, despite an obvious lack of software infrastructure in this area. The present trend is for a business to commission the authoring of a custom program aimed at a particular need. While the cost of such an application is usually high, the accuracy of the information, the timeliness of the information, and the accessibility of the information are likely worth the cost. In fact, while such systems may seem cost prohibitive to develop, in many cases the actual cost on a per-data-entry basis may prove to be relatively small, especially in light of the timeliness and accuracy associated with real time data collection.
To develop software for a handheld computer, a custom program is typically developed and tested on a larger system. When the developer is satisfied with the program, it is compiled for a particular target device and transferred to handheld devices through a communication link. If users are using more than one type of device, the same program must be tested and compiled for each type of device. If a change is required, the developer must make the change on the development system and re-transfer the entire program to each target device.
In a typical data gathering application, information is entered into custom designed forms on the handheld computer. Eventually, the data entered in the handheld finds its way to a database, which is typically located on a server which is accessible to those needing the information or from which it may be accessed by other programs such as accounting systems, materials management programs, etc. Present day servers are well suited to the task of information management and generally provide broad access to and searchability to collected data.
One problem area in such systems becomes apparent when the data is transferred from the handheld to the server. While it would seem that wireless interfaces and handhelds were made for each other, the marriage of the two is not without its own set of problems. Wireless interfaces fall into a number of different categories. At one extreme is the infrared (“IR”) port often found on handheld devices. The range of this type of interface is usually limited to a few feet and typically supports transfer rates of 115 kbaud, or less.
Another method for wireless communication is via a wireless local area network or “WLAN.” A typical example of a WLAN is that defined by the IEEE 802.11 standard. When a handheld computer is equipped with a WLAN interface, the device can communicate with other computers also equipped with a WLAN interface, or even computers networked to a WLAN equipped computer by a wired network. Typically, WLAN interfaces provide a range of several hundred feet. As long as a handheld is within the range of another WLAN equipped computer, the network connection is continuous. Wireless local area networks sport data rates from a few thousand bits per second up to at least 52 million bits per second, depending on the particular standard employed.
Yet another known wireless interface for handheld computers is a CDPD interface, CDMA interface, GSM interface, or similar wireless interface or modem. While there are some variations, these systems are often built around a cellular phone network and provide coverage similar to that of a cellular phone, typically national, or even international, coverage. Such interfaces will experience the same gaps in service as can be expected with a cell phone. While such systems provide an exceptionally wide area of coverage, they typically do so at limited bandwidth, e.g. 19.2 kbaud.
Of course handheld devices are not limited to wireless communications. Typically such devices can be connected to another computer through a universal serial bus (“USB”) connection, an RS-232 connection, an Ethernet connection on a properly equipped device, or similar hardwired connection. While these interfaces range from moderately paced to the extremely fast, they are exceptionally reliable, at least while the connection is in place. Unfortunately, few environments are well suited to tethering a handheld to allow a continuous wired connection.
It can be seen that perhaps the greatest drawback to using a handheld for data gathering as part of a larger system are the limitations of the data link: 1) it is unlikely that the data link will always be available; and 2) the bandwidth of most of the practical wireless options is restrictive. Presently there are two methods for dealing with the problem of data link availability. In one scheme, data is transmitted as it is collected. The advantage of such a scheme is that the database is updated in real time and represents current data. The disadvantages are, for all practical purposes, the scheme is limited to systems using a wireless interface and when the wireless link is not operational, generally data cannot be entered.
Alternatively, entered data can be stored locally on the handheld and transmitted in a batch process when a link is established. The advantage of this system is that it is tolerant of gaps in the communication link and works well with wired transfers of data. Unfortunately, data is not delivered in real time and the data base may be somewhat stale, depending on the length of time between the collection of data and the presence of the link.
The issue of bandwidth may be problematic on several fronts. If programs are updated periodically, the entire program must be sent and the time to reload may be objectionable. In the opposite direction, if large amounts of data are collected, it may be time consuming to send the data collected from the handheld to the server, particularly when performed in a batch fashion.
It is thus an object of the present invention to provide an operating system for a handheld computer which will allow a program to execute on any handheld computer.
It is a further object of the present invention to provide an operating system for a handheld computer wherein programming changes will only necessitate incremental transfers of program instructions.
It is still a further object of the present invention to provide an operating system for a handheld computer wherein files may be transferred among devices without a translation or conversion.
It is yet a further object of the present invention to provide an operating system for a handheld computer wherein programming steps and data are tokenized to reduce the load on a communication channel of finite bandwidth.
It is yet a further object of the present invention to provide a system of networked computers in which modifications to a computer program for a remote computer are sent in real time to the remote computer and are implemented immediately and seamlessly without the requirement of user installation.